Readers can reach the editorial team through the contact page atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/santiagodc8/tu_perfil.net/llms.txt
Use this file to discover all available pages before exploring further.
/contacto.
URL
Form fields
The contact form collects three required fields:| Field | Type | Constraints |
|---|---|---|
name | text | Required |
email | Required, must be a valid email address | |
message | textarea | Required, maximum 5,000 characters |
"use client") that manages its own state and submits via fetch:
src/app/(public)/contacto/page.tsx
Mensaje enviado — Gracias por contactarnos. Te responderemos lo antes posible.On error, a red error banner appears above the form with the API’s error message.
API endpoint
| Status | Condition |
|---|---|
400 | Missing fields, invalid email format, or message exceeds 5,000 characters |
429 | Rate limit exceeded |
500 | Database error |
Rate limiting
The/api/contact endpoint enforces a rate limit of 5 messages per IP address per hour:
src/app/api/contact/route.ts
How a message is processed
Server-side validation
The API validates that all three fields are present, the email matches a basic regex, and the message does not exceed 5,000 characters. Invalid requests are rejected immediately with HTTP 400.
Saved to the database
Valid messages are inserted into the
contacts table using the Supabase admin client. This step is critical — if it fails, the API returns HTTP 500 and no email is sent.src/app/api/contact/route.ts
Email notification sent (non-blocking)
After saving to the database, the API sends an HTML email notification to the admin address via Resend. If the email fails (e.g., missing API key, Resend error), the failure is logged but does not affect the HTTP response — the reader still receives a success confirmation.The email includes the sender’s name, email (as a
src/app/api/contact/route.ts
mailto: link), message body, and a direct “Responder” button.The Contact interface
TheContact TypeScript type is defined in src/types/index.ts:
src/types/index.ts
Admin inbox
All submitted messages are visible in the admin panel at/admin/mensajes. From there, an admin can:
- View each message’s name, email, and full message text.
- Mark messages as read (
read = true). - Reply directly by clicking the sender’s email address.
/admin/mensajes.
